package com.pgytesting.secondhandcar.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;

import com.pgytesting.secondhandcar.model.LoanRepaymentInformation;
import com.pgytesting.secondhandcar.model.OrderName;
import com.pgytesting.secondhandcar.model.Pagination;

/**
 * 订单(OrderName)表数据库访问层
 *
 * @author makejava
 * @since 2019-08-12 18:55:58
 */
@Mapper
public interface OrderNameDao {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    OrderName queryById(String id);

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    OrderName queryReviewInfID(String id);

    /**
     * 通过ID查询数据是否存在
     *
     * @param id
     * @return
     */
    Integer queryCount(String id);

    /**
     * 查询指定行数据
     *
     * @param pagination 分页类
     * @return 对象列表
     */
    List<OrderName> queryAllByLimit(Pagination pagination);


    /**
     * 通过实体作为筛选条件查询
     *
     * @param orderName 实例对象
     * @return 对象列表
     */
    List<OrderName> queryAll(OrderName orderName);

    /**
     * 新增数据
     *
     * @param orderName 实例对象
     * @return 影响行数
     */
    int insert(OrderName orderName);

    /**
     * 修改数据
     *
     * @param orderName 实例对象
     * @return 影响行数
     */
    int update(OrderName orderName);

    /**
     * 通过主键删除数据
     *
     * @param revision 主键
     * @return 影响行数
     */
    int deleteById(String revision);

    /**
     * 查询订单中待审核的征信列表
     *
     * @param orderName
     * @return
     */
    List<Map<String, Object>> queryCreditReporting(OrderName orderName);

    /**
     * 根据多个订单进行数据统计
     *
     * @param id 拼接的多个订单
     * @return
     */
    int queryCountUser(String id);

    /**
     * 查询月度订单
     *
     * @param startMonth 每月开始时间
     * @return
     */
    List<OrderName> queryMonthOrder(Long startMonth);

    /**
     * 查询月度订单
     *
     * @param startMonth 每月开始时间
     * @return
     */
    List<OrderName> queryMonthOrderCount(Long startMonth);

    /**
     * 查询今日收益
     *
     * @param time 今天开始时间
     * @return
     */
    Double todayIncome(Long time);

    /**
     * 查询今日收益
     *
     * @param sql 拼接的SQL
     * @return
     */
    List<Map<String, Object>> queryListOrderId(String sql);
    
    Map<String, Object> queryUserVehicleInformation(OrderName orderName);
    
    List<LoanRepaymentInformation> queryUserLoanInformation(OrderName orderName);

}